<?xml version="1.0"?>
<component name="org.nuxeo.ecm.collections.pageprovider.override">

  <require>org.nuxeo.ecm.collections.pageprovider</require>

  <extension point="providers" target="org.nuxeo.ecm.platform.query.api.PageProviderService">

    <coreQueryPageProvider name="default_collection">
      <property name="maxResults">PAGE_SIZE</property>
      <pattern escapeParameters="true" quoteParameters="false">
        SELECT * FROM Document WHERE /*+ES: INDEX(dc:title.fulltext) OPERATOR(match_phrase_prefix) */
        dc:title ILIKE '?%' AND ecm:mixinType = 'Collection' AND ecm:primaryType != 'Favorites' AND
        ecm:isProxy = 0 AND ecm:mixinType != 'HiddenInNavigation' AND
        ecm:isVersion = 0 AND ecm:isTrashed = 0
      </pattern>
      <sort ascending="true" column="dc:title"/>
      <pageSize>50</pageSize>
    </coreQueryPageProvider>

    <coreQueryPageProvider name="user_collections">
      <pattern escapeParameters="true" quoteParameters="true">
        SELECT * FROM Document WHERE /*+ES: INDEX(dc:title.fulltext) OPERATOR(match_phrase_prefix) */
        dc:title ILIKE :searchTerm AND ecm:mixinType = 'Collection' AND
        ecm:primaryType != 'Favorites' AND
        ecm:isProxy = 0 AND ecm:mixinType != 'HiddenInNavigation' AND
        ecm:isVersion = 0 AND ecm:isTrashed = 0
      </pattern>
      <parameter>#{currentUser.name}</parameter>
      <sort ascending="false" column="dc:modified"/>
      <pageSize>50</pageSize>
    </coreQueryPageProvider>

    <coreQueryPageProvider name="default_collection_candidate">
      <property name="maxResults">PAGE_SIZE</property>
      <pattern escapeParameters="true" quoteParameters="false">
        SELECT * FROM Document WHERE /*+ES: INDEX(dc:title.fulltext) OPERATOR(match_phrase_prefix) */ dc:title ILIKE '?%'
        AND ecm:mixinType != 'SystemDocument' AND ecm:mixinType !=
        'NotCollectionMember' AND ecm:mixinType != 'HiddenInNavigation' AND
        ecm:isTrashed = 0
      </pattern>
      <sort ascending="true" column="dc:title"/>
      <pageSize>50</pageSize>
    </coreQueryPageProvider>

    <coreQueryPageProvider name="default_content_collection">
      <pattern>
        SELECT * FROM Document where ecm:mixinType != 'HiddenInNavigation' AND
        ecm:isTrashed = 0
        AND collectionMember:collectionIds/* = ?
      </pattern>
      <sort ascending="true" column="dc:title"/>
      <pageSize>50</pageSize>
    </coreQueryPageProvider>

    <coreQueryPageProvider name="ordered_content_collection">
      <pattern>
        SELECT collection:documentIds/* FROM Document where ecm:mixinType != 'HiddenInNavigation' AND
        ecm:isVersion = 0 AND ecm:isTrashed = 0
        AND ecm:uuid = ?
      </pattern>
      <pageSize>50</pageSize>
    </coreQueryPageProvider>

    <coreQueryPageProvider name="all_collections">
      <property name="maxResults">PAGE_SIZE</property>
      <pattern>
        SELECT * FROM Document WHERE ecm:mixinType = 'Collection' AND
        ecm:isProxy = 0 AND ecm:mixinType != 'HiddenInNavigation' AND
        ecm:isVersion = 0 AND ecm:isTrashed = 0
      </pattern>
      <pageSize>1000</pageSize>
    </coreQueryPageProvider>

  </extension>

</component>
